package com.xm;

import java.util.*;

/**
 * @Author：xm
 * @Project：runoob
 * @Date：2024/7/11 21:15
 */

public class Iterator04 {
    public static void main(String[] args) {
        System.out.println("---遍历list---");
        List<String> arrayList = new ArrayList<String>();
        arrayList.add("AAA");
        arrayList.add("BBB");
        arrayList.add("CCC");

        // 遍历list（普通for循环）
        for (int i = 0; i < arrayList.size(); i++) {
            System.out.println(arrayList.get(i));
        }

        // 遍历list（增强for循环）
        for (String str : arrayList) {
            System.out.println("str = " + str);
        }

        // 把链表变为数组相关的内容进行遍历
        String[] strArray = new String[arrayList.size()];
        arrayList.toArray(strArray);
        for (int i = 0; i < strArray.length; i++) {
            System.out.println(strArray[i]);
        }

        // 迭代器遍历
        Iterator<String> iterator = arrayList.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

        System.out.println("---遍历map---");
        Map<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("key1", "value1");
        hashMap.put("key2", "value2");
        hashMap.put("key3", "value3");

        // 普遍使用，二次取值
        // 通过Map.keySet遍历key和value：
        for (String str : hashMap.keySet()) {
            System.out.println("key="+str+",value="+hashMap.get(str));
        }

        // 通过Map.entrySet使用iterator遍历key和value："
        Iterator<Map.Entry<String, String>> iteratorMap = hashMap.entrySet().iterator();
        while (iteratorMap.hasNext()) {
            Map.Entry<String, String> entry = iteratorMap.next();
            System.out.println("key="+entry.getKey()+",value="+entry.getValue());
        }

        // 推荐，尤其是容量大时
        // 通过Map.entrySet遍历key和value
        for (Map.Entry<String, String> entry : hashMap.entrySet()) {
            System.out.println("key="+entry.getKey()+",value="+entry.getValue());
        }

        // 通过Map.values()遍历所有的value，但不能遍历key
        for (String v : hashMap.values()) {
            System.out.println("v = " + v);
        }
    }
}